package com.example.langchain4j.assistant;

import cn.hutool.json.JSONUtil;
import com.deepoove.poi.XWPFTemplate;
import dev.langchain4j.model.input.Prompt;
import dev.langchain4j.model.input.PromptTemplate;
import org.springframework.core.io.ClassPathResource;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) throws IOException {


//        extracted();
        PromptTemplate promptTemplate = PromptTemplate.from(
                """
                        尽你所能回答以下问题:

                        问题:
                        {{question}}

                        请根据以下信息作答:
                        {{information}}""");
        Map<String, Object> variables = new HashMap<>();
        variables.put("question", "这是问题");
        variables.put("information", "这是信息");
        Prompt prompt = promptTemplate.apply(variables);

        System.out.println("prompt: "+prompt.text());

//        DocumentParser parser = new ApacheTikaDocumentParser();
//        DocumentParser parser = new ApachePdfBoxDocumentParser();
//        PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher("glob:*.pdf");
//        List<Document> documents = FileSystemDocumentLoader.loadDocuments("src/main/resources/knowledge", pathMatcher, parser);
//        for (Document document : documents){
////            System.out.println(document.text());
//            String[] splitStr = document.text().split("—— 1 —— ");
////            System.out.println(splitStr[1]);
//            DocumentSplitter splitter = DocumentSplitters.recursive(800, 100);
//            List<TextSegment> textSegments = splitter.split(Document.from(splitStr[1]));
//            for (TextSegment textSegment : textSegments){
//                System.out.println(textSegment.text());
//                System.out.println("-----------------------------------------");
//            }
//        }
        // 正则表达式匹配数字部分
//        String regex = "——\\s*(\\d+)\\s*——";
//        Pattern pattern = Pattern.compile(regex);
//
//        String text = "事项的。 \n" +
//                "—— 76 —— \n" +
//                "序号 违法行为 适用情形 法律规定 处罚依据 ";
//
//        Matcher matcher = pattern.matcher(text);
//        if (matcher.find()) {
//            // 提取数字
//            String number = matcher.group(1);
//            System.out.println("提取的数字: " + number); // 输出: 76
//
//            // 替换整个匹配部分
//            String replaced = matcher.replaceAll("第" + number + "条");
//            System.out.println("替换后: " + replaced); // 输出: 这是前面的内容第76条这是后面的内容
//        }

    }

    private static void extracted() throws IOException {
        String jsonResult = "{\n" +
                "    \"org_name\": \"宜宾市消防救援支队\",\n" +
                "    \"year\": \"2025\",\n" +
                "    \"case_no\": \"0002\",\n" +
                "    \"case_source_1\": \"☑\",\n" +
                "    \"case_source_2\": \"☐\",\n" +
                "    \"case_source_3\": \"☐\",\n" +
                "    \"case_source_4\": \"☐\",\n" +
                "    \"case_reason\": \"不及时消除火灾隐患；\",\n" +
                "    \"person_name\": \"\",\n" +
                "    \"person_gender\": \"\",\n" +
                "    \"person_birth\": \"\",\n" +
                "    \"person_id_type\": \"\",\n" +
                "    \"person_id_no\": \"\",\n" +
                "    \"person_address\": \"\",\n" +
                "    \"person_contact\": \"\",\n" +
                "    \"unit_name\": \"宜宾市第一人民医院\",\n" +
                "    \"unit_legal_person\": \"任XX\",\n" +
                "    \"unit_address\": \"宜宾市文星街65号\",\n" +
                "    \"unit_contact\": \"1537827XXXX\",\n" +
                "    \"unit_credit_code\": \"12511200452066XXXX\",\n" +
                "    \"case_brief\": \"2025年04月25日，宜宾市消防救援支队防火监督人员谢远、姜兴涛对位于宜宾市叙州区叙州大道普和东路16号的宜宾市第一人民医院（西区总院）开展“双随机、一公开”消防监督抽查时发现：CRT图形显示装置故障；地下室气体灭火系统的钢瓶间无法使用；23层室内消火栓无水；23层疏散走道设置杂物柜；综合楼全部避难间设置为病房等问题隐患，并向该单位下发了《责令限期改正通知书》（宜消限字〔2025〕第0XXX号）。2025年06月10日，宜宾市消防救援支队防火监督人员谢远、李杜（因姜兴涛公差在外进行调整）对上述火灾隐患整改情况进行复查，发现该单位地下室气体灭火系统的钢瓶间无法使用和综合楼全部避难间设置为病房的火灾隐患未整改，涉嫌违反了《中华人民共和国消防法》第十六条第一款第（五）项之规定，建议立案查处。\",\n" +
                "    \"opinion_1\": \"☑\",\n" +
                "    \"opinion_2\": \"☐\",\n" +
                "    \"opinion_3\": \"☐\",\n" +
                "    \"opinion_4\": \"☐\",\n" +
                "    \"law_enforcers\": \"谢远、李杜\",\n" +
                "    \"law_date\": \"2025年06月10日\",\n" +
                "    \"main_handler\": \"张三\",\n" +
                "    \"assistant_handler\": \"李四\",\n" +
                "    \"leader_name\": \"王XX\",\n" +
                "    \"leader_date\": \"2025年06月11日\"\n" +
                "}";
        Map<String, Object> resultMap = JSONUtil.toBean(jsonResult, Map.class);
        System.out.println(resultMap);
        ClassPathResource resource = new ClassPathResource("行政处罚立案审批表template.docx");
        InputStream templateInputStream = resource.getInputStream();
        XWPFTemplate template = XWPFTemplate.compile(templateInputStream).render(resultMap);
        template.write(new FileOutputStream("output.docx"));
    }
}
